@echo off
chcp 65001 > nul
rem ========================================
rem 若依运销系统启动脚本 (简化版)
rem 功能: 启动Spring Boot应用jar包
rem 作者: System Admin
rem 日期: 2025-10-11
rem ========================================

rem 设置控制台标题和颜色
title 若依运销系统 - 启动中...
color 0A

echo.
echo ========================================
echo          若依运销系统启动脚本
echo ========================================
echo.

rem 检查Java环境
echo [信息] 检查Java运行环境...
java -version > nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 未找到Java运行环境，请确保已安装JDK/JRE
    pause
    exit /b 1
)

rem 设置项目路径
set PROJECT_HOME=%~dp0
set JAR_FILE=%PROJECT_HOME%ruoyi-admin\target\ruoyi-admin.jar

rem 检查jar包
if not exist "%JAR_FILE%" (
    echo [错误] jar包不存在，请先编译项目: mvn clean package
    pause
    exit /b 1
)

rem 创建日志目录
set LOG_DIR=%PROJECT_HOME%logs
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"

rem 生成日志文件名
for /f "tokens=2 delims==." %%i in ('wmic os get localdatetime /value') do set datetime=%%i
set LOG_FILE=%LOG_DIR%\ruoyi-%datetime:~0,8%_%datetime:~8,6%.log

rem JVM内存配置
rem 初始堆内存: 512MB, 最大堆内存: 1GB
rem 元空间: 128MB-256MB, 使用G1垃圾收集器
set JAVA_OPTS=-server -Xms512m -Xmx1024m
set JAVA_OPTS=%JAVA_OPTS% -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseG1GC -XX:MaxGCPauseMillis=200
set JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=Asia/Shanghai

rem 显示配置信息
echo [信息] jar包: %JAR_FILE%
echo [信息] 日志文件: %LOG_FILE%
echo [信息] 内存配置: 初始512MB, 最大1GB
echo [信息] 端口: 8080
echo.

rem 更新标题
title 若依运销系统 - 运行中

echo [信息] 启动若依运销系统...
echo [提示] 访问地址: http://localhost:8080
echo [提示] 按 Ctrl+C 停止服务
echo.
echo ========================================

rem 启动应用 (方式1: 控制台输出 + 日志文件)
java %JAVA_OPTS% -jar "%JAR_FILE%" --spring.profiles.active=prod --logging.file.path=%LOG_DIR% 2>&1 | findstr /R ".*" > "%LOG_FILE%" & type "%LOG_FILE%"

rem 如果上面的命令不工作，请取消下面这行注释，注释上面那行
rem java %JAVA_OPTS% -jar "%JAR_FILE%" --spring.profiles.active=prod --logging.file.path=%LOG_DIR%

echo.
echo [信息] 应用已退出
pause